A typical computer system has a processor that executes an operating system that provides an interface between a user and a mass storage resource, such as a magnetic or optical recording disk. The operating system transfers a user request to retrieve data from a disk drive to a software device driver, also executed by the processor, which provides communication between the operating system and the external device and memory.
Most operating systems, for example Mac OS 7.5 and UNIX, contain a set of services that must be properly combined to achieve the same effect among such services. Designers of different device drivers must coordinate memory protection, residency, addressability, and memory coherency. Memory protection ensures that an input/output (I/O) operation does not violate the access allowed to the memory. Residency ensures that there is not a page fault accessing the memory during the I/O operation.
Addressability ensures that when using direct memory access (DMA) to perform an I/O operation, the logical buffer specification is converted into a physical specification. Memory coherency ensures that the data being moved is not stale and the effects of the data movement are apparent to the processor and any associated data caches.